免費開始練習
高考申論題 109年 [資訊處理] 資料結構

第 三 題

📖 題組:
四、若我們用相鄰矩陣(Adjacency Matrix)M來表示圖一中的無向圖G = (V, E),請考慮下面的問題:
圖一、無向圖G = (V, E)
題組圖片
若將圖一無向圖G = (V, E)中的邊給予方向成為如圖二中的有向圖(Directed Graph)G’:(10分)
圖二、有向圖G’
⑴有向圖G’沒有迴圈(Cycle),是一個無迴圈有向圖(Directed Acyclic Graph, DAG),所以存在節點的拓樸排序(Topological Sort),請對G’給出一個拓樸排序(Topological Sort)。
⑵請給一個方法來判斷一個有向圖是否沒有迴圈。
題目圖片
📝 此題為申論題

思路引導 VIP

本題考查有向無環圖(DAG)的拓樸排序及迴圈判斷方法。第一小題可利用計算各節點的入分枝度(In-degree),每次挑選入分枝度為 0 的節點輸出並移除其向外的邊,逐步求得拓樸排序;第二小題可順著第一小題的邏輯,說明若拓樸排序無法輸出所有節點即代表有迴圈,或是說明利用深度優先搜尋(DFS)檢查是否產生「後向邊(Back Edge)」。

🤖
AI 詳解 AI 專屬家教

【解題關鍵】拓樸排序的核心在於每次選擇入分枝度(In-degree)為 0 的節點,而判斷迴圈可利用拓樸排序的節點計數或深度優先搜尋(DFS)的後向邊檢測。 【解答】 ⑴ 拓樸排序(Topological Sort)

▼ 還有更多解析內容
📝 拓樸排序與迴圈偵測
💡 利用入分枝度或 DFS 走訪來對 DAG 排序並判別圖形是否循環

🔗 Kahn's Algorithm 拓樸排序執行流程

  1. 1 計算入分枝度 — 統計圖中每個節點被指入的邊數。
  2. ↓
  3. 2 佇列初始化 — 將所有入分枝度為 0 的節點放入佇列。
  4. ↓
  5. 3 輸出與更新 — 取出節點輸出,並將其指向的鄰居入分枝度減 1。
  6. ↓
  7. 4 循環處理 — 若鄰居度數變為 0 則入隊,重複直至佇列為空。
  8. ↓
  9. 5 終局判定 — 比較輸出節點數與總數,不相等則代表有迴圈。
🔄 延伸學習:此演算法可應用於編譯程式碼的相依性檢查或專案時程安排。
🧠 記憶技巧:VIP 會員可查看這題的記憶口訣與速記法
⚠️ 常見陷阱:VIP 會員可查看這題最常被誘答的陷阱整理
關鍵路徑 (Critical Path Method) 深度優先搜尋 (DFS) 強連通元件 (SCC) 廣度優先搜尋 (BFS)

🏷️ AI 記憶小卡 VIP

AI 記憶小卡

升級 VIP 解鎖記憶小卡

考前複習神器,一眼掌握重點

🏷️ 相關主題

圖形理論與演算法
查看更多「[資訊處理] 資料結構」的主題分類考古題

📝 同份考卷的其他題目

查看 109年[資訊處理] 資料結構 全題